﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

using SmlEngine.UI.Input;
using SmlEngine.UI.Managers;
using SmlEngine.UI.Screens;

namespace SmlEngine.UI
{
    /// <summary>
    /// Defines a 'Scene' object, which can be placed inside a 'Screen' object.
    /// </summary>
    public interface IScene : IDebuggable
    {
        void Initialize();
        void Update(GameTime gameTime, InputManager input);
        void Draw(GameTime gameTime, SpriteBatch spriteBatch);
        /*
         * This one also needs an explanation.
         * Whenever the GraphicsDevice is reset, all the Graphics corrupt badly.
         * Reloading the content seems to work well enough.
         * This method is designed to let a scene know that the content needs to be reloaded.
         * No parameters for extensibility.
         */
        void ReloadContent();


        Screen Screen { get; }

        Rectangle? Area { get; }
    }
}
